App = new Object();
App.Core = new Object();
App.LoginUser = null;
var mainViewPort;

var menu_store = Ext.create('Ext.data.Store', {
	fields : [ 'id', 'name', 'order', 'status', 'perantid', 'childMenuItems', 'action' ]
});

var main_item = [];
App.Core = {
	// getMainView : function(loginUserName) {
	getMainView : function() {
		// App.LoginUser = loginUserName;
		this.mainViewPort = Ext.create('Ext.container.Viewport', {
			layout : 'border',
			width : 1000,
			margin : 'auto',
			style : {
				margin : 'auto'
			},
			items : [ {
				region : 'north',
				xtype : 'container',
				height : 50,
				html : 'header goes here',
				split : false,
				border : true
			}, {
				region : 'center',
				xtype : 'panel',
				layout : 'fit',
				border : false,
				items : [ this.getMainContainer() ]
			}, {
				region : 'west',
				xtype : 'panel',
				width : 200,
				split : false,
				html : 'Notification',
				layout : 'fit',
				border : true
			} ],
			showLoading : function(msg) {
				var el = this.getEl();
				if (el) {
					if (msg) {
						el.mask(msg);
					} else {
						el.unmask();
					}
				}

			}
		});
	},
	mainContainer : null,
	getMainContainer : function() {
		if (!this.mainContainer) {
			this.mainContainer = Ext.create('Ext.panel.Panel', {
				layout : 'fit',
				tbar : this.getMainMenu(),
				showLoading : function(msg) {
					var el = this.getEl();
					if (el) {
						if (msg) {
							el.mask(msg);
						} else {
							el.unmask();
						}
					}

				}
			});
		}
		return this.mainContainer;
	},

	Registrationmenu : function() {
		submenu = Ext.create('Ext.menu.Menu', {
			id : 'Registrationmenu',
			style : {
				overflow : 'visible'
			},
			items : [ {
				text : 'Fund Manager',
				handler : function() {
					App.Core.setScreen(FundManager.getCenterPanel());
				}
			}, {
				text : 'Customer',
				handler : function() {
					App.Core.setScreen(Customer.getCenterPanel());
				}
			}, {
				text : 'Issuer',
				handler : function() {
					App.Core.setScreen(Issuer.getCenterPanel());
				}
			} ]
		});
		return submenu;
	},
	MaintenanceMenu : function() {
		maintenancemenu = Ext.create('Ext.menu.Menu', {
			id : 'Maintenance',
			style : {
				overflow : 'visible'
			},
			items : [ {
				text : 'Fund',
				handler : function() {
					App.Core.setScreen(Fund.getCenterPanel());
				}
			}, {
				text : 'Instrument Type',
				handler : function() {
					App.Core.setScreen(InstrumentType.getCenterPanel());
				}
			}, {
				text : 'Holiday Celender',
				handler : function() {
					App.Core.setScreen(HolidayCalendar.getCenterPanel());
				}
			}, {
				text : 'System Configuration',
				handler : function() {
					App.Core.setScreen(SystemConfiguration.getCenterPanel());
				}
			} ]
		});
		return maintenancemenu;
	},

	ClientInvestmentMenu : function() {
		clientInvestmentmenu = Ext.create('Ext.menu.Menu', {
			id : 'ClientInvestment',
			style : {
				overflow : 'visible'
			},
			items : [ {
				text : 'Investment Request',
				handler : function() {
					App.Core.setScreen(Investment.getCenterPanel());
				}
			}, {
				text : 'Redemption Request',
				handler : function() {
					App.Core.setScreen(RedemptionRequest.getCeneterPanel());
				}
			} ]
		});
		return clientInvestmentmenu;
	},

	DealMenu : function() {
		dealmenu = Ext.create('Ext.menu.Menu', {
			id : 'deal',
			style : {
				overflow : 'visible'
			},
			items : [ {
				text : 'Record Deal',
				menu : [ {
					text : 'Purchase',
					handler : function() {
						App.Core.setScreen(PurchasesDeal.getCenterPanel());
					}
				}, {
					text : 'Sale',
					handler : function() {
						App.Core.setScreen(recSale.getCenterPanel());
					}
				}, {
					text : 'Repo',
					handler : function() {
						App.Core.setScreen(RepoDeal.getCenterPanel());
					}
				}, {
					text : 'Fiexd Deposit',
					handler : function() {
						App.Core.setScreen(FDDeal.getCenterPanel());
					}
				}, {
					text : 'Reverse Repo',
					handler : function() {
						App.Core.setScreen(ReverseRepoDeal.getCenterPanel());
					}
				} ]
			}, {
				text : 'Receive/ Issue Instrument',
				handler : function() {
					App.Core.setScreen(InsIssueReceive.getCenterPanel());
				}
			}, {
				text : 'Short Maturities',
				handler : function() {
					App.Core.setScreen(ShortMaturities.getCenterPanel());
				}
			}, {
				text : 'Rollover',
				handler : function() {
					App.Core.setScreen(Rollover.getCenterPanel());
				}
			} ]
		});
		return dealmenu;
	},
	SystemMenu : function() {
		systemMenu = Ext.create('Ext.menu.Menu', {
			id : 'System',
			style : {
				overflow : 'visible'
			},
			items : [ {
				text : 'Day End',
				handler : function() {
					App.Core.setScreen(EOD.getCenterPanel());
				}
			}, {
				text : 'Confirmations',
				menu : [ {
					text : 'Purchase',
					handler : function() {
						App.Core.setScreen(ConfirmPurchase.getCenterPanel());
					}
				}, {
					text : 'Sale',
					handler : function() {
						App.Core.setScreen(ConfSale.getCenterPanel());
					}
				}, {
					text : 'Repo',
					handler : function() {
						App.Core.setScreen(ConfRepo.getCenterPanel());
					}
				}, {
					text : 'Rev-Repo',
					handler : function() {
						App.Core.setScreen(ConfRevRepo.getCenterPanel());
					}
				}, {
					text : 'FD',
					handler : function() {
						App.Core.setScreen(ConfFd.getCenterPanel());
					}
				} ]
			}, ]
		});
		return systemMenu;
	},
	UserMenu : function() {
		usermenu = Ext.create('Ext.menu.Menu', {
			id : 'user',
			style : {
				overflow : 'visibel'
			},
			items : [ {
				text : 'User Registration',
				handler : function() {
					App.Core.setScreen(UserRegistration.getCenterPanel());
				}
			}, {
				text : "User Group",
				handler : function() {
					App.Core.setScreen(UserGroup.getCenterPanel());
				}
			}, {
				text : "Change Password",
				handler : function() {
					App.Core.setScreen(ChangePassword.getCenterPanel());
				}
			} ]
		});
		return usermenu;
	},
	PaymentRecieptMenu : function() {
		paymentrecieptmenu = Ext.create('Ext.menu.Menu', {
			id : 'PaymentReciept',
			style : {
				overflow : 'visible'
			},
			items : [ {
				text : 'Payment Request',
				// iconCls : 'icon_accept',
				handler : function() {
					App.Core.setScreen(PaymentRequest.getCenterPanel());
				}
			}, {
				text : 'Payment',
				handler : function() {
					App.Core.setScreen(Payments.getCenterPanel());
				}
			}, {
				text : 'Reciept Request',
				handler : function() {
					App.Core.setScreen(ReceiptRequest.getCeneterPanel());
				}
			}, {
				text : 'Reciept',
				handler : function() {
					App.Core.setScreen(Receipt.getCenterPanel());
				}
			}, {
				text : 'Journal Entry',
				handler : function() {
					App.Core.setScreen(JournalEntry.getCeneterPanel());
				}
			} ]
		});
		return paymentrecieptmenu;
	},

	mainMenu : null,
	getMainMenu : function() {
		if (!this.mainMenu) {
			this.mainMenu = Ext.create('Ext.toolbar.Toolbar', {
				xtype : 'toolbar',
				dock : 'top',
				layout : {
					overflowHandler : 'Menu'
				},
				items : main_item
			});
		}
		return this.mainMenu;
	},
	setScreen : function(screen) {
		var container = this.getMainContainer();
		container.removeAll();
		container.add(screen);
	},
	removeScreen : function() {
		var container = this.getMainContainer();
		container.removeAll();
	},
	showLoading : function(msg) {
		this.getMainContainer().showLoading(msg);
	}
};

Ext.onReady(function() {
	App.Core.getMainView();
	console.log("okkkk");
	Ext.Ajax.request({
		url : 'getMenuItem',
		success : function(response) {
			var obj = Ext.decode(response.responseText);
			console.log(obj.menuItemDtos);
			menu_store.loadRawData(obj.menuItemDtos);

			for (var i = 0; i < menu_store.getCount(); ++i) {
				var rec = menu_store.getAt(i);
				console.log(rec.data);
				// 'id', 'name', 'order', 'status', 'perantid',
				// 'childMenuItems', 'action'
				var item = {
					text : rec.data.name
				};
				main_item.push(item);
			}
			console.log(main_item);
		}
	});

});

store = Ext.create('Ext.data.TreeStore', {
	fields : [ 'text', 'field_A', 'field_B', 'field_C', 'field_D', 'menuType' ],
	cls : 'no-leaf-icons',
	root : {
		expanded : true,
		children : [ {
			text : 'Registration',
			checked : false,
			expanded : true,
			menuType : 'P',
			children : [ {
				text : "Fund Manager",
				checked : false,
				field_A : true,
				field_B : true,
				field_C : null,
				field_D : null,
				menuType : 'C',
				leaf : true,
			}, {
				text : "Customer",
				leaf : true,
				field_A : true,
				checked : false,
				field_B : false,
				field_C : null,
				field_D : null,
				menuType : 'C',
			}, {
				text : "Issuer",
				leaf : true,
				field_A : false,
				checked : false,
				field_B : true,
				field_C : null,
				field_D : null,
				menuType : 'C',
			} ]
		}, {
			text : 'Maintenance',
			checked : false,
			expanded : true,
			menuType : 'P',
			children : [ {
				text : 'Fund',
				leaf : true,
				checked : false,
				field_A : true,
				field_B : true,
				field_C : null,
				field_D : null,
				menuType : 'C',
			} ]
		}, {
			text : 'Cilent Investment',
			checked : false,
			expanded : true,
			menuType : 'P',
			children : [ {
				text : 'Investment Request',
				leaf : true,
				checked : false,
				field_A : true,
				field_B : true,
				field_C : true,
				field_D : true,
				menuType : 'C',
			}, {
				text : 'Redemption Request',
				leaf : true,
				checked : false,
				field_A : true,
				field_B : true,
				field_C : true,
				field_D : true,
				menuType : 'C',
			} ]
		}, {
			text : 'Deal',
			checked : false,
			expanded : true,
			menuType : 'P',
			children : [ {
				text : 'Recode Deal',
				checked : false,
				menuType : 'P',
				expanded : true,
				children : [ {
					text : 'Purchase',
					checked : false,
					menuType : 'C',
					leaf : true,
					field_A : true,
					field_B : true,
					field_C : true,
					field_D : null,
				} ]
			} ]
		} ]
	}
});

var s = {
	'success' : true,
	'variable' : 100,
	'results' : [ {
		'id' : '1',
		'text' : '1',
		'expanded' : true,
		'results' : [ {
			'id' : '5',
			'text' : '5',
			'leaf' : true
		}, {
			'id' : '6',
			'text' : '6',
			'leaf' : true
		} ]
	}, {
		'id' : '2',
		'text' : '2',
		'leaf' : true
	}, {
		'id' : '3',
		'text' : '3',
		'leaf' : true
	}, {
		'id' : '4',
		'text' : '4',
		'leaf' : true
	}, {
		'id' : '7',
		'text' : '7',
		'leaf' : true
	}, {
		'id' : '8',
		'text' : '8',
		'leaf' : true
	}, {
		'id' : '9',
		'text' : '9',
		'leaf' : true
	}, {
		'id' : '10',
		'text' : '10',
		'expanded' : true,
		'results' : [ {
			'id' : '11',
			'text' : '11',
			'leaf' : true
		}, {
			'id' : '12',
			'text' : '12',
			'leaf' : true
		} ]
	} ]
}

// {
// text : 'Registration',
// menu : this.Registrationmenu()
// },
// {
// text : 'Maintenance',
// menu : this.MaintenanceMenu()
// }, {
// text : 'Client Investment',
// menu : this.ClientInvestmentMenu()
// }, {
// text : 'Deals',
// menu : this.DealMenu()
// }, {
// text : 'Payment/ Reciept',
// menu : this.PaymentRecieptMenu()
// }, {
// text : 'System',
// menu : this.SystemMenu()
// }, {
// text : 'User Maintanen',
// menu : this.UserMenu()
// }, '->', {
// text : 'Logout',
// handler : function() {
// // console.log(Ext.util.Cookies.get(App.LoginUser));
// // App.Cookies.clear(App.LoginUser);
// // console.log(Ext.util.Cookies.get(App.LoginUser));
// }
// }, '|', /* "<B>" + App.LoginUser.toUpperCase() + "</B>" */
